<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
		<meta name="apple-mobile-web-app-capable" content="yes">
		<meta name="apple-mobile-web-app-status-bar-style" content="black">
		<link rel="stylesheet" type="text/css" href="../../css/mui.min.css" />
		<script src="../../js/mui.min.js" type="text/javascript" charset="utf-8"></script>
		<style>
			.main_content p {
				font-size: 1em;
				color: black;
				text-indent: 2em;
				padding: 6px;
			}
			.main_content img {
				padding: 8px;
			}
			.sub_header {
				text-align: center;
				background-color: rgba(0, 188, 0, 0.7);
				height: 36px;
				margin-top: 8px;
				margin-bottom: 8px;
			}
			.sub_header h3 {
				color: white;
				position: relative;
				top: 20%;
				transform: translateY(-50%);
			}
		</style>
	</head>

	<body>
		<header class="mui-bar mui-bar-nav">
			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
			<h1 class="mui-title">Java 基础</h1>
		</header>
		<div class="mui-content">
			<div class="mui-content-padded" style="margin: 5px;">
				<div class="sub_header">
					<h3>内部类</h3>
				</div>
				<div class="main_content">
					<p>[color=blue]定义：
						<br /> 内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员，并且依附于外部类而存在的。内部类可为静态，可用protected和private修饰（而外部类只能使用public和缺省的包访问权限）。
						<br /> [color=blue]为什么需要内部类？
						<br /> 典型的情况是，内部类继承自某个类或实现某个接口，内部类的代码操作创建其的外围类的对象。所以你可以认为内部类提供了某种进入其外围类的窗口。使用内部类最吸引人的原因是：
						<br /> 每个内部类都能独立地继承自一个（接口的）实现，所以无论外围类是否已经继承了某个（接口的）实现，对于内部类都没有影响。如果没有内部类提供的可以继承多个具体的或抽象的类的能力，一些设计与编程问题就很难解决。从这个角度看，内部类使得多重继承的解决方案变得完整。接口解决了部分问题，而内部类有效地实现了&ldquo;多重继承&rdquo;。
						<br /> 根据位置的不同，Java中的内部类分为四种：
						<br /> [color=blue]静态内部类。
						<br /> 1、使用static修饰，声明在类体中。
						<br /> 2、静态内部类中可以访问外部类的静态成员。
						<br /> [color=blue]成员内部类。
						<br /> 1、声明在类体中，不使用static，具有类的成员特征，也就是，必须有类的实例才能创建内部类实例。
						<br /> 2、内部类实例可以访问共享外部类的成员变量（很常用）。
						<br /> 3、如：链表的节点就可以定义为内部类。
						<br /> [color=blue]局部内部类&nbsp;
						<br /> 把类声明在方法中，就是局部内部类，作用域。
						<br /> 类似局部变量（很少见）。
						<br /> [color=blue]匿名内部类。
						<br /> 1、匿名类，非常常见，可以写在任何地方,就像一般的语句。
						<br /> 2、语法更象是创建对象：Date d = new Date(){//...};
						<br /> 3、匿名类是对原类的一个继承，同时创建了实例，{} 就是继承以后的类体。类体中可使用所有类的语法。
						<br /> 4、匿名类不能写构造器。
						<br /> 5、匿名类可以从抽象类或者接口继承，必须提供抽象方法的实现。
						<br /> 任何内部类都编译成独立的class文件。最大的作用：封装！匿名类可以封装内部概念：情侣间的&ldquo;土豆&rdquo;和菜市场的&ldquo;土豆&rdquo;是不一样的。
					</p>

				</div>
			</div>
		</div>

	</body>

</html>